package com.icedevcloud.common.security.util;

import cn.dev33.satoken.stp.StpUtil;
import com.icedevcloud.common.security.dto.LoginUserInfoDto;

/**
 * <p>
 * 安全工具类
 * </p>
 *
 * @author dengbing
 * @since 2023-08-30
 */
public class SecurityUtil {

    private static final String LOGIN_USER_INFO = "loginUserInfo";
    private static final String SUPER_ADMIN_ROLE = "super-admin";


    /**
     * 登录
     *
     * @param loginUserInfo
     */
    public static void login(LoginUserInfoDto loginUserInfo) {
        StpUtil.login(loginUserInfo.getId());
        StpUtil.getSession().set(LOGIN_USER_INFO, loginUserInfo);
    }

    /**
     * 退出登录
     */
    public static void logout() {
        if (StpUtil.isLogin()) {
            StpUtil.logout();
        }
    }

    public static Boolean isSuperAdminRole() {
        return StpUtil.hasRole(SUPER_ADMIN_ROLE);
    }

    /**
     * 获取当前登录用户ID
     *
     * @return
     */
    public static Long getCurrentLoginUserId() {
        return StpUtil.getLoginIdAsLong();
    }

    /**
     * 获取当前登录用户信息
     *
     * @return
     */
    public static LoginUserInfoDto getCurrentLoginUserInfo() {
        LoginUserInfoDto loginUserInfoDto = (LoginUserInfoDto) StpUtil.getSession().get(LOGIN_USER_INFO);
        return loginUserInfoDto;
    }

}
